GoogleCloudStorageのライフサイクル管理にパスフィルター機能が追加されました
はじめに
データアナリティクス事業本部のkobayashiです。
GoogleCloudのCloudStorageではオブジェクトのライフサイクル管理によりオブジェクトの削除やストレージクラスの変更を行えますが、以前は行えなかったパス指定の機能が追加されたので早速使ってみたのでまとめます。
Cloud Storageオブジェクトのライフサイクル管理
Cloud Storageのオブジェクトのライフサイクル管理はオブジェクトの日付属性やバージョン情報を元にオブジェクトの削除やストレージクラスのダウングレードを行える機能です。よく使うパターンとしては以下の様なものがあるかと思います。
- 作成直後は頻繁にアクセスされるが一定時間経過後はアクセス頻度が低くなるオブジェクトのストレージクラスを変更する
- ログデータをBigQueryに取り込む際に一時保管場所としてGCSを使うが取込後ある程度したら削除する
- バージョニングをしているオブジェクトに対しn世代以上は削除する
この様な便利なライフサイクル管理ですが、以前はバケット単位でしか行えなかったためCloudFunctionsで削除専用の関数を作成する必要がありましたが、この度のリリースによりオブジェクトをPrefix・Suffixパスでフィルタリングが行えるようになりCloudStorageの標準機能になったため非常に使い勝手が良くなりました。
以前のライフサイクル管理
新しいライフサイクル管理
ライフサイクル管理を試してみる
早速設定をしてみたいと思います。シチュエーションとしては日々送られてくるログファイルを保存しているバケットがありこの中のapp_1
とapp_2
のパス配下のオブジェクトのみに一週間後に削除するライフサイクル管理をCloudコンソールとgsutilから設定します。
sample-bucket/ ├── app_1 │ ├── 20220721.log │ ├── 20220722.log │ ├── 20220723.log │ ├── 20220724.log │ ├── 20220725.log │ ├── 20220726.log │ ├── 20220727.log │ ├── 20220728.log │ ├── 20220729.log │ ├── 20220730.log │ └── 20220731.log ├── app_2 │ ├── 20220721.log │ ├── 20220722.log │ ├── 20220723.log │ ├── 20220724.log │ ├── 20220725.log │ ├── 20220726.log │ ├── 20220727.log │ ├── 20220728.log │ ├── 20220729.log │ ├── 20220730.log │ └── 20220731.log └── app_3 ├── 20220721.log ├── 20220722.log ├── 20220723.log ├── 20220724.log ├── 20220725.log ├── 20220726.log ├── 20220727.log ├── 20220728.log ├── 20220729.log ├── 20220730.log └── 20220731.log
Cloudコンソールから設定
手順1)CloudコンソールからCloud Storageに進み対象のバケットを選択し、ライフサイクル
タブを押下する
手順2)ルールを追加
を押下する
手順3)アクションを選択
でオブジェクトを削除する
を選択し続行
を押下する
手順4)Set Rule Scopes
のオブジェクト名が接頭語と一致
をチェックしapp_1/,app_2/
を入力する
手順5)Set Conditions
で年齢
を選択し7
を入力し作成をする
以上でライフサイクルルールが作成されルール一覧に表示されルールに則りapp_1
とapp_2
のパス配下のオブジェクトのみ7日以上経過した時点で削除されるようになります。
gsutilから設定
はじめにライフサイクルルールのJsonファイルを作成する必要があります。これは公式ドキュメントのライフサイクル構成ルール を参考に記述します。 今回のルールですと以下のJsonファイルになります。
lifecycle.json
{ "lifecycle": { "rule": [ { "action": { "type": "Delete" }, "condition": { "matchesPrefix": [ "app_1/", "app_2" ], "age": 7 } } ] } }
このルールを適用するには以下のコマンドを実行します。
$ gsutil lifecycle set ./lifecycle.json gs://{バケット名}
これで先程同様のライフサイクルルールがバケットに作成されました。ルール内容を確認するには以下のコマンドで確認できます。
$ gsutil lifecycle get gs://{バケット名} {"rule": [{"action": {"type": "Delete"}, "condition": {"age": 7, "matchesPrefix": ["app_1/", "app_2"]}}]}
以上で設定完了です。
まとめ
GoogleCloudのCloudStorageのオブジェクトのライフサイクル管理を設定してみました。ライフサイクル管理にパスフィルタ条件が使えるようになったのでライフサイクル管理一つで削除やストレージクラスの変更を行えるようになり大変便利になりました。
最後まで読んで頂いてありがとうございました。